Ansible এ when কন্ডিশন ব্যবহার করে আপনি নির্দিষ্ট শর্ত (condition) মেনে টাস্ক নিয়ন্ত্রণ করতে পারেন। অর্থাৎ, আপনি টাস্ক বা টাস্কগুলিকে এমনভাবে কন্ডিশনাল করতে পারেন যেন তা শুধুমাত্র নির্দিষ্ট শর্ত পূরণ হলেই কার্যকর হয়। এটি Ansible প্লেবুককে ডাইনামিক এবং নমনীয় করতে সাহায্য করে।
when কন্ডিশন সাধারণত একটি লজিক্যাল এক্সপ্রেশন গ্রহণ করে, যা সত্য (true) বা মিথ্যা (false) হতে পারে। যদি কন্ডিশন সত্য হয়, তাহলে টাস্কটি কার্যকর হয়; অন্যথায়, তা স্কিপ করা হয়।
tasks:
- name: Task Name
module_name:
parameter: value
when: condition
নিচের উদাহরণে আমরা দেখবো কিভাবে when কন্ডিশন ব্যবহার করে একটি টাস্ককে নির্দিষ্ট অপারেটিং সিস্টেমে কার্যকর করা যায়।
---
- name: Install Apache only on Ubuntu systems
hosts: all
become: yes
tasks:
- name: Install Apache on Ubuntu
apt:
name: apache2
state: present
when: ansible_distribution == "Ubuntu"
এখানে, when
কন্ডিশন চেক করছে হোস্টের অপারেটিং সিস্টেম Ubuntu কিনা (ansible_distribution == "Ubuntu"
)। যদি হোস্টের অপারেটিং সিস্টেম Ubuntu হয়, তখন Apache ইনস্টল করা হবে।
অনেক সময় প্লেবুকে ডিফাইন করা ভ্যারিয়েবল বা হোস্ট ভ্যারিয়েবলের উপর ভিত্তি করে টাস্ক নিয়ন্ত্রণ করতে হয়।
---
- name: Install Nginx based on variable
hosts: all
become: yes
vars:
install_nginx: true
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
when: install_nginx
এখানে, install_nginx
নামে একটি ভ্যারিয়েবল তৈরি করা হয়েছে। যদি এর মান true
হয়, তাহলে Nginx ইনস্টল করা হবে।
কিছু কিছু ক্ষেত্রে, একটি টাস্কের আউটপুট বা রেজাল্টের উপর ভিত্তি করে পরবর্তী টাস্ক কার্যকর করা হয়।
---
- name: Check if a file exists and create if it doesn't
hosts: all
become: yes
tasks:
- name: Check if /tmp/testfile exists
stat:
path: /tmp/testfile
register: file_status
- name: Create the file if it doesn't exist
file:
path: /tmp/testfile
state: touch
when: not file_status.stat.exists
এখানে, প্রথম টাস্কটি /tmp/testfile
ফাইলের স্ট্যাটাস চেক করে এবং আউটপুট file_status
নামে রেজিস্টারে সংরক্ষণ করে। পরবর্তী টাস্কটি when
কন্ডিশন ব্যবহার করে চেক করে যদি ফাইলটি না থাকে (not file_status.stat.exists
), তখন এটি ফাইল তৈরি করবে।
when কন্ডিশনে আপনি বিভিন্ন অপারেটর এবং লজিক্যাল এক্সপ্রেশন ব্যবহার করতে পারেন:
- name: Install package if OS is Ubuntu and version is 20.04
apt:
name: apache2
state: present
when: ansible_distribution == "Ubuntu" and ansible_distribution_version == "20.04"
এখানে, Apache ইনস্টল করা হবে শুধুমাত্র যদি অপারেটিং সিস্টেম Ubuntu হয় এবং এর ভার্সন 20.04 হয়।
Ansible এ when কন্ডিশন ব্যবহার করে টাস্ক বা টাস্কগুলোকে নির্দিষ্ট শর্ত অনুযায়ী কার্যকর করা যায়। এটি প্লেবুককে ডাইনামিক এবং নমনীয় করে তোলে, যাতে বিভিন্ন হোস্ট বা ভ্যারিয়েবলের ভিত্তিতে স্বয়ংক্রিয়ভাবে কাজ সম্পন্ন করা যায়।
আরও দেখুন...